<template>
    <uni-popup ref="popupInitRef" class="privacy-popup" type="bottom" :is-mask-click="false" :safe-area="false">
        <view class="privacy-popup-body">
            <view class="privacy-popup-title">用户隐私保护提示</view>
            感谢您使用本程序，您使用本程序前应当阅读并同意<text class="privacy-title" @tap="openPrivacyContract">{{
                privacyTitle
            }}</text
            >。
            <view>
                当您点击同意并开始使用产品服务时，即表示您已理解并同意该条款内容，该条款将对您产生法律约束力。如您不同意，将无法正常使用小程序。
            </view>
            <view class="privacy-popup-footer">
                <button id="disagree-btn" type="default" @tap="handleDisagree">不同意</button>
                <button id="agree-btn" open-type="agreePrivacyAuthorization" @agreeprivacyauthorization="handleAgree">
                    同意
                </button>
            </view>
        </view>
    </uni-popup>
</template>

<script setup>
import { ref, onMounted } from 'vue';
import { onShow } from '@dcloudio/uni-app';

const props = defineProps({
    // disabledScroll: {
    //     type: Boolean,
    //     default: false
    // },
    isHandleTabBar: {
        type: Boolean,
        default: false
    }
});

let privacyTitle = ref('《用户隐私保护指引》');
let show = ref(false);

let popupInitRef = ref();
/**
 * 控制popup
 * @param visible
 */
const handlePopup = visible => {
    show.value = visible;
    console.log('popupInitRef?.value', popupInitRef?.value);
    popupInitRef?.value[visible ? 'open' : 'close']();
};
/**
 * 控制打开弹窗
 */
const open = () => {
    if (props.isHandleTabBar) {
        uni?.hideTabBar({
            /**
             * 隐藏tabbar之后执行（无论隐藏tabbar成功错误）
             */
            complete: () => {
                handlePopup(true);
            }
        });
        return;
    }
    handlePopup(true);
};

/**
 * 控制关闭弹窗
 */
const close = () => {
    if (props.isHandleTabBar) {
        uni?.showTabBar({
            /**
             * 隐藏tabbar之后执行（无论展示tabbar成功错误）
             */
            complete: () => {
                handlePopup(false);
            }
        });
        return;
    }
    handlePopup(false);
};

/**
 *
 */
const handleDisagree = () => {
    // 用户点击拒绝按钮后
    close();
};

/**
 *
 */
const handleAgree = () => {
    // 用户点击同意按钮后
    close();
};

/**
 * 打开隐私协议
 */
const openPrivacyContract = () => {
    wx.openPrivacyContract();
};

onMounted(() => {
    if (wx.getPrivacySetting) {
        wx.getPrivacySetting({
            /**
             *
             * @param res
             */
            success: res => {
                // 返回结果为: res = { needAuthorization: true/false, privacyContractName: '《xxx隐私保护指引》' }
                // res.privacyContractName && (privacyTitle.value = res.privacyContractName);
                if (res.needAuthorization) {
                    open();
                    // wx.requirePrivacyAuthorize({
                    //     /**
                    //      *
                    //      */
                    //     success: () => {
                    //         // 用户同意授权
                    //         // 继续小程序逻辑
                    //         console.log('用户同意授权');
                    //     },
                    //     /**
                    //      *
                    //      */
                    //     fail: () => {
                    //         console.log('用户拒绝授权');
                    //     }, // 用户拒绝授权
                    //     /**
                    //      *
                    //      */
                    //     complete: () => {}
                    // });
                } else {
                    // 用户已经同意过隐私协议，所以不需要再弹出隐私协议，也能调用隐私接口
                }
            }
        });
    } else {
        // 低版本不支持获取
        // 低版本基础库不支持 wx.getPrivacySetting 接口，隐私接口可以直接调用
    }
});
</script>

<style lang="scss" src="./style.scss" scoped></style>
